﻿using System;
using System.Collections.Generic;
using System.Text;
using System.IO.Ports;

namespace LugageTrace.AcessoAoKIT
{
    public class Porta
    {
        public SerialPort PortaSerial;


        public void Abrir(string Porta, int velocidade)
        {

            PortaSerial = new SerialPort(Porta, velocidade);


        }

        public void findPortaDispositivo()
        {

            string[] NomesPortas = SerialPort.GetPortNames();

            PortaSerial.BaudRate = 19200;



            byte[] comando = new byte[] 
                    {   0xFF, //Header
                        0x01, //Fixo
                        0x09, //Tamanho dos dados
                        0x87, //Comando: Setar para modo automatico
                        0x01, //ligado:1 , desligado:0
                        0x01, //Set Modo Byte Track (Leitura Gravação)
                        0x07, //Quantidade de Blocos de dados
                        0x00, // 0: Senha desativada 1: Senha Ativada
                        0x00, // 1º: byte da senha
                        0x00, // 2º: byte da senha
                        0x00, // 3º: byte da senha
                        0x00, // 4º: byte da senha
                        0x9A  // CheckSum : Soma dos bytes exceto o header e o próprio check sum durrrrrrr...
                    };


            for (int i = 0; i < NomesPortas.Length; i++)
            {

                PortaSerial.PortName = NomesPortas[i].ToString();
                PortaSerial.WriteBufferSize = 32;

                if (!PortaSerial.IsOpen)
                {
                    PortaSerial.Open();
                    PortaSerial.DiscardInBuffer();
                    PortaSerial.Write(comando, 0, comando.Length);

                    if (PortaSerial.ReadExisting() != "FF0101999B")
                    {
                        if (i == NomesPortas.Length) // Se todas as portas foram verificadas saia
                            throw new ApplicationException("Dispositivo RFID leitura não foi encontrado.");

                        continue;
                    }
                    else
                    {
                        break;
                    }
                }

            }



        }




        public void fechar()
        {
            if(PortaSerial.IsOpen)
                PortaSerial.Close();

        }







    }
}
